PILOT

Programmed Instruction, Learning, Or Teaching (PILOT) is a simle historic programming language developed in the 1960s.[1] Like its younger sibling LOGO programming language, it was an early foray into the technology of computer assisted instruction (CAI).

Contents

History

PILOT was developed by John Amsden Starkweather, a psychology professor at the University of California, San Francisco medical center. In 1962 he developed a simple language for automating learnng tests called Computest. Starting in 1968, he developed a follow-on project called PILOT, for various computers of the time such as the SDS 940.[2]

Language syntax

A line of PILOT code contains (from left to right) the following syntax elements:

A label can also be alone in a line, not followed by other code. The syntax for a label is an asterisk followed by an identifier (alphanumeric string with alphabetic initial character).

Command letters

The following commands are used in "core PILOT". Lines beginning with "R:" indicate a remark (or a comment) explaining the code that follows.

A
Accept input into "accept buffer". Examples:
 R:Next line of input replaces current contents of accept buffer
 A:
 R:Next line of input replaces accept buffer, and string variable 'FREE'
 A:$FREE
 R:Next 3 lines of input assigned to string variables 'X', 'Y' and 'Z'
 A:$X,$Y,$Z
 R:Numeric input assigned to numeric variable "Q"
 A:#Q
C
Compute and assign numeric value. Most PILOT implementations have only integer arithmetic, and no arrays. Example:
 R:Assign arithmetic mean of #X and #Y to #AM
 
 C:#AM=(#X+#Y)/2

D
Dimension an array, on some implementations.
E
End (return from) subroutine or (if outside of a subroutine) abort program. Always used without any operand.
J
Jump to label. Example:
 J:*RESTART

M
Match the accept buffer against string variables or string literals. Example:
 R:Search accept buffer for "TRUTH", the value of $MEXICO and "YOUTH", in that order
 
 M:TRUTH,$MEXICO,YOUTH

The first match string (if any) that is a substring of the accept buffer is assigned to the special variable $MATCH. The buffer characters left of the first match are assigned to $LEFT, and the characters on the right are assigned to $RIGHT.

The match flag is set to 'yes' or 'no', depending on whether a match is made. Any statement that has a Y following the command letter is processed only if the match flag is set. Statements with N are processed only if the flag is not set.

N
Equivalent to TN: (type if last match unsuccessful)
R
The operand of R: is a comment, and therefore has no effect.
T
'Type' operand as output. Examples:
 R:Output a literal string
 
 T:Thank you for your support.

 R:Output a variable expression
 
 T:Thank you, $NAME.

U
Use (call) a subroutine. A subroutine starts with a label and ends with E: Example:
 R:Call subroutine starting at label *INITIALIZE
 
 U:*INITIALIZE

Y
Equivalent to TY: (type if last match successful)
Parentheses
If there is parenthesized expression in a statement, it is a conditional expression, and the statement is processed only if the test has a value of 'true'. Example:
 R:Type message if x>y+z
 
 T(#X>#Y+#Z):Condition met

Derivatives

Extensions to core PILOT include arrays and floating point numbers in Apple PILOT, and implementation of LOGO-inspired turtle graphics in Atari PILOT.[3]

Versions of PILOT overlaid on the BASIC interpreters of early microcomputers were not unknown in the late 1970s and early 1980s, and Byte Magazine at one point published a non-Turing complete derivative of PILOT known as Waduzitdo by Larry Kheriarty as a way of demonstrating what a computer was capable of.[4][5] A 1983 product called Vanilla PILOT for the Commodore 64 combined some features of LOGO.[6]

In 1991 the Institute of Electrical and Electronics Engineers (IEEE) published a standard for Pilot as IEEE Std 1154-1991. It has since been withdrawn.[7]

An open source implementation was called RPilot,[1] and another called Sky Pilot begun in 2005.[8]

References

  1. ^ a b Rob Linwood. "PILOT Resource Center". Sourceforge project. http://rpilot.sourceforge.net/pilot.html. Retrieved October 13, 2011. 
  2. ^ Xiuzhi Zhou (1998). "Register of the John A. Starkweather Papers, 1965-1985". University of California, San Francisco library. http://oac.cdlib.org/view?docId=tf2d5nb1xg;style=oac4;doc.view=entire_text. Retrieved October 13, 2011. 
  3. ^ Atari PILOT for beginners. Reston Publishing. 1983. http://books.google.com/books?id=VujzAAAAMAAJ. 
  4. ^ Brian Connors (April 6, 2001). "Waduzitdo 2001". http://www.reocities.com/ResearchTriangle/Station/2266/tarpit/waduzitdo/wdzref.html. Retrieved October 13, 2011. 
  5. ^ Larry Kheriarty (September 1978). "WADUZITDO: How To Write a Language in 256 Words or Less". Byte. 
  6. ^ "Vanilla PILOT, PILOT that comes with turtle graphics". Infoworld: pp. 67–69. September 12, 1983. http://books.google.com/books?id=ry8EAAAAMBAJ&pg=PA67. Retrieved October 13, 2011. 
  7. ^ "IEEE Standard 1154-1991 for Programmed Inquiry, Learning, or Teaching (PILOT)". IEEE Standards Committee. 1991. doi:10.1109/IEEESTD.1991.108548. http://standards.ieee.org/reading/ieee/std_public/description/busarch/1154-1991_desc.html. 
  8. ^ Rob Linwood (December 25, 2005). "Sky Pilot". Sourceforge project. http://skypilot.sourceforge.net/. Retrieved October 13, 2011. 

Further reading